package co.com.fenoco.encuentas.servicios;

import java.util.ArrayList;
import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import co.com.fenoco.encuentas.persistencia.Usuario;

/**
 * Session Bean implementation class Usuarios
 */
@Stateless
public class UsuariosBean implements IUsuariosRemote, IUsuariosLocal {
	/**
     * El contexto de persistencia.
     */
    @PersistenceContext
    private EntityManager em;
    /**
     * Default constructor. 
     */
    public UsuariosBean() {
        // TODO Auto-generated constructor stub
    }

	/* (non-Javadoc)
	 * @see co.com.fenoco.encuentas.persistencia.IUsuariosRemote#crearUsuario(co.com.fenoco.encuentas.persistencia.Usuario)
	 */
	@Override
	public void crearUsuario(Usuario usuario) {
		em.persist(usuario);
	}

	/* (non-Javadoc)
	 * @see co.com.fenoco.encuentas.persistencia.IUsuariosRemote#modificarUsuario(co.com.fenoco.encuentas.persistencia.Usuario)
	 */
	@Override
	public void modificarUsuario(Usuario usuario) {
		em.merge(usuario);
		em.flush();
	}

	/* (non-Javadoc)
	 * @see co.com.fenoco.encuentas.persistencia.IUsuariosRemote#eliminarUsuario(co.com.fenoco.encuentas.persistencia.Usuario)
	 */
	@Override
	public void eliminarUsuario(Usuario usuario) {
		// TODO Auto-generated method stub
		em.remove(usuario);
	}

	/* (non-Javadoc)
	 * @see co.com.fenoco.encuentas.persistencia.IUsuariosRemote#consultarUsuario(co.com.fenoco.encuentas.persistencia.Usuario)
	 */
	@Override
	public ArrayList<Usuario> consultarUsuario(Usuario usuario) {
		Query query =  em.createNamedQuery("findUsuarios");
		return new ArrayList<Usuario>(query.getResultList());
	}

	/* (non-Javadoc)
	 * @see co.com.fenoco.encuentas.persistencia.IUsuariosRemote#autenticarUsuario(java.lang.String, java.lang.String)
	 */
	@Override
	public Usuario autenticarUsuario(String login, String password) {
		Usuario retorno = null;
		Query query =  em.createNamedQuery("autenticarUsuario");
		query.setParameter("login", login);
		query.setParameter("password", password);
		List<Usuario> lista =  query.getResultList();
		if(lista!=null && !lista.isEmpty()){
			retorno = lista.get(0);
		}
		return retorno;
	}

}
